package _12ProxyDesign.DynamicProxy.CglibDynamic;

/**
 * 首先要导入jar包
 */
//https://blog.csdn.net/goskalrie/article/details/52458773
    //https://www.cnblogs.com/ygj0930/p/6542259.html
public class MainCglib {
    public static void main(String[] args) {
        Admin admin=new Admin();
        AdminCglib adminCglib=new AdminCglib();
        Admin proxy = (Admin)adminCglib.getProxy(admin);
        proxy.addPerson();
    }
    /**
     *  JDK动态代理的代理对象在创建时，需要使用业务实现类所实现的接口作为参数（
     *  因为在后面代理方法时需要根据接口内的方法名进行调用）。
     *  如果业务实现类是没有实现接口而是直接定义业务方法的话，就无法使用JDK动态代理了。
     *  并且，如果业务实现类中新增了接口中没有的方法，这些方法是无法被代理的（因为无法被调用）。
     */
    /**
     * cglib是针对类来实现代理的，原理是对指定的业务类生成一个子类，
     * 并覆盖其中业务方法实现代理。
     * 因为采用的是继承，所以不能对final修饰的类进行代理。
     */
}
